/****************************************************************************
** Copyright 2019 The Open Group
** Copyright 2019 Bluware, Inc.
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
****************************************************************************/

#include "VolumeDataChunk.h"
#include "VolumeDataLayer.h"

std::size_t std::hash<OpenVDS::VolumeDataChunk>::operator()(const OpenVDS::VolumeDataChunk& volumeDataChunk) const
{
  return OpenVDS::HashCombiner(volumeDataChunk.index).Add(volumeDataChunk.layer->GetLayerID()).GetCombinedHash();
}

namespace OpenVDS
{
bool operator<(VolumeDataChunk const& lhs, VolumeDataChunk const& rhs)
{
  if (lhs.layer->GetLOD() == rhs.layer->GetLOD())
  {
    if (lhs.layer->GetChannelIndex() == rhs.layer->GetChannelIndex())
    {
      return lhs.index < rhs.index;
    }
    return lhs.layer->GetChannelIndex() < rhs.layer->GetChannelIndex();
  }
  return lhs.layer->GetLOD() < rhs.layer->GetLOD();
}
}
